package com.cosmoplat.mom.iot.client;

import com.cosmoplat.mom.iot.client.api.param.*;
import com.cosmoplat.mom.iot.client.api.response.DeviceAlarmRecord;
import com.cosmoplat.mom.iot.client.api.response.DeviceDataItem;
import com.cosmoplat.mom.iot.client.api.response.DeviceHistoryData;
import com.cosmoplat.mom.iot.client.api.response.DeviceInfo;
import com.cosmoplat.mom.iot.client.api.response.DeviceTypeInfo;
import com.cosmoplat.mom.iot.client.api.response.IotResponse;
import com.cosmoplat.mom.iot.client.api.response.PageResponse;

import java.util.List;

/**
 *
 * @author yotta
 * @date 2025/6/16
 */
public interface IotClient {

    String TOKEN_NAME = "Satoken";

    IotResponse<String> auth();

    IotResponse<List<DeviceTypeInfo>> getDeviceTypeList(GetDeviceTypeListParam param);
    
    IotResponse<List<DeviceInfo>> getDeviceListByTypeId(GetDeviceListByTypeIdParam param);
    
    IotResponse<List<DeviceDataItem>> getDataItemListByDeviceId(GetDataItemListByDeviceIdParam param);
    
    /**
     * 分页查询设备报警记录
     * 
     * @param param 查询参数
     * @return 分页结果
     */
    IotResponse<PageResponse<DeviceAlarmRecord>> getDeviceAlarmRecordPage(GetDeviceAlarmRecordPageParam param);
    
    /**
     * 分页查询设备历史数据
     * 
     * @param param 查询参数
     * @return 分页结果
     */
    IotResponse<PageResponse<DeviceHistoryData>> getDeviceHistoryDataPage(GetDeviceHistoryDataPageParam param);

    IotResponse<List<DeviceDataItem>> getDataItemListByDeviceCode(GetDataItemListByDeviceCodeParam param);
}
